package com.meeting.meetingroom_api.service;

import com.meeting.meetingroom_api.dto.PaymentDto;
import com.meeting.meetingroom_api.dto.PaymentInitiateDto;
import com.meeting.meetingroom_api.dto.PaymentNotificationDto;
import com.meeting.meetingroom_api.entity.Booking;

public interface PaymentService {
    // Initiates a payment process, might return a redirect URL or data for client-side SDK
    Object initiatePayment(PaymentInitiateDto initiateDto, Integer customerId);

    // Handles webhook notifications from payment gateway
    PaymentDto handlePaymentNotification(PaymentNotificationDto notificationDto);

    // Retrieves payment status for a booking
    PaymentDto getPaymentStatusByBookingId(Integer bookingId);

    // Creates an initial payment record when a booking is made
    PaymentDto createInitialPaymentRecord(Booking booking);

    // Process a refund (simplified, real refund involves gateway interaction)
    PaymentDto processRefund(Integer bookingId, String reason, Integer adminId);

    PaymentDto confirmPayment(Integer bookingId, Integer customerId);
}